class ElecteursController < ApplicationController
  before_filter :find_electeur, :only => [:show, :edit, :update, :destroy]
  before_filter :est_connecte, :only => [:edit, :update, :destroy]
  before_filter :est_proprietaire, :only => [:edit, :update, :destroy]
  before_filter :disconnecte, :only => [:new]
      
  def find_electeur
    @electeur= Electeur.find(params[:id])
    @user = @electeur.user
  end
  
  # GET /electeurs
  # GET /electeurs.xml
  def index
    @electeurs = Electeur.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @electeurs }
    end
  end

  def test
    date=Date.today
    age=date.year-@electeur.naissance.year
    return age
  end
  
  # GET /electeurs/1
  # GET /electeurs/1.xml
  def show
    @votes_trie = @electeur.votes.sort{|x,y| x.rang <=> y.rang}
    respond_to do |format|
      format.html # _question.html.erb
      format.xml  { render :xml => @electeur }
    end
  end

  # GET /electeurs/new
  # GET /electeurs/new.xml
  def new
    @electeur = Electeur.new
    @user = User.new
    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @electeur }
    end
  end

  # GET /electeurs/1/edit
  def edit
  end

  # POST /electeurs
  # POST /electeurs.xml
  def create
    @electeur = Electeur.new(params[:electeur])
    @user = @electeur.build_user(params[:electeur][:user_attributes])
    respond_to do |format|
      if @electeur.save
        flash[:notice]= 'Votre compte a bien été créée. Vous pouvez maintenant vous connectez avec votre email <b>'+@electeur.user.email+'</b> et le mot de passe fourni lors de l\'inscription'
        @template.sign_in @user
        format.html { redirect_to(@electeur) }
        format.xml  { render :xml => @electeur, :status => :created, :location => @electeur }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @electeur.errors, :status => :unprocessable_entity }
      end
    end
  end

  # PUT /electeurs/1
  # PUT /electeurs/1.xml
  def update
    respond_to do |format|
      if @electeur.update_attributes(params[:electeur])
        flash[:notice] = 'Votre compte à bien été mis à jour.'
        format.html { redirect_to(@electeur) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @electeur.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /electeurs/1
  # DELETE /electeurs/1.xml
  def destroy
    @template.sign_out
    @electeur.user.destroy
    @electeur.destroy
    
    respond_to do |format|
      format.html { redirect_to(electeurs_url) }
      format.xml  { head :ok }
    end
  end

  private

  def est_connecte
    unless @template.signed_in?
      flash[:notice] = "Veuillez-vous connecter pour accéder à cette page."
      redirect_to connexion_path
    end
  end

  def est_proprietaire
    unless @template.current_user == @user
      flash[:notice] = "Vous n'avez pas le droit d'accéder à cette page."
      begin
        redirect_to :back
      rescue ActionController::RedirectBackError
        redirect_to root_path
      end
    end
  end

  def disconnecte
    if @template.signed_in?
      flash[:notice] = "Veuillez-vous déconnecter pour accéder à cette page."
      begin
        redirect_to :back
      rescue ActionController::RedirectBackError
        redirect_to root_path
      end
    end
  end
end
